/*
Containers:  brief Definition of container classes from thrust to fui.
    Copyright (C) 2012  Jorge E. A. Atala
                        FuDePAN
    This file is part of the Fui Proyect.

    Fui is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Fui is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Fui.  If not, see <http://www.gnu.org/licenses/>.
*/


#ifndef ITERATORS_H
#   define ITERATORS_H
#   include <thrust/iterator/counting_iterator.h>
#   include <thrust/iterator/transform_iterator.h>

namespace fui
{
template<class T>
struct counting_iterator
{
    typedef thrust::counting_iterator<T> type;
};

using thrust::make_counting_iterator;

template<class UnaryFunction, class Iterator>
struct transform_iterator
{
    typedef thrust::transform_iterator<UnaryFunction, Iterator> type;
};

using thrust::make_transform_iterator;

template<class ElementIterator, class IndexIterator>
struct permutation_iterator
{
    typedef thrust::permutation_iterator<ElementIterator, IndexIterator> type;
};

using thrust::make_permutation_iterator;
}
#endif

